package utils

//
//import (
//	"context"
//	"fmt"
//	"github.com/kevinlisr/install-levault/vari"
//	"github.com/minio/minio-go/v7"
//	"log"
//	"os"
//	"path/filepath"
//	"strings"
//)
//
//type Minio struct {
//}
//
//func (m Minio) CreateBucket(bucketName, location string) error {
//	if bucketName == "" {
//		bucketName = "nancal-test"
//	}
//
//	if location == "" {
//		location = "cn-north-1"
//	}
//
//	err := vari.MinioClient.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{
//		Region: location,
//	})
//	if err != nil {
//		log.Println("创建bucket失败！")
//		// 检查存储桶是否已经存在。
//		exists, err := vari.MinioClient.BucketExists(context.Background(), bucketName)
//		if err == nil && exists {
//			log.Printf("We already own %s\n", bucketName)
//		} else {
//			log.Println("打印失败！")
//			log.Fatalln(err)
//		}
//	}
//	log.Printf("Successfully created %s\n", bucketName)
//
//	return nil
//}
//
//func (m Minio) UploadFile(bucketName, dirPath string) error {
//	err := uploadDirectory(bucketName, dirPath, "")
//	if err != nil {
//		log.Fatalln(err)
//	}
//
//	fmt.Println("Upload completed successfully.")
//
//	return nil
//}
//
//// uploadDirectory recursively uploads a directory to the specified bucket.
//func uploadDirectory(bucketName, dirPath, prefix string) error {
//	err := filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
//		if err != nil {
//			return err
//		}
//
//		if !info.IsDir() {
//			relativePath := strings.TrimPrefix(path, dirPath)
//			objectName := filepath.Join(prefix, relativePath)
//			objectName = strings.ReplaceAll(objectName, "\\", "/") // Replace backslashes with forward slashes for MinIO
//
//			fmt.Printf("Uploading %s to %s\n", path, objectName)
//			return uploadFile(vari.MinioClient, bucketName, objectName, path)
//		}
//
//		return nil
//	})
//	if err != nil {
//		return fmt.Errorf("error walking the path %s: %v", dirPath, err)
//	}
//	return nil
//}
//
//// uploadFile uploads a single file to the specified bucket.
//func uploadFile(client *minio.Client, bucketName, objectName, filePath string) error {
//	ctx := context.Background()
//	_, err := client.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{})
//	if err != nil {
//		return fmt.Errorf("failed to upload %s: %v", filePath, err)
//	}
//	return nil
//}
